Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Node / ReticulumProjects / MeshChatX.git / files / Dockerfile.hardened

Displaying Raw • Download


Dockerfile.hardened 3f7ef731b5effd9aa3a81eceea66fd6c2b56498c (3f7ef731) Text, 6.53 KB

Tff7b72#Tff7b72 syntax=dockerTff7b72/Tff7b72dockerfile:1
Tff7b72#Tff7b72 Multi-stage image on Wolfi (Chainguard): Node dev for frontend, Python dev for
Tff7b72#Tff7b72 PoetryTff7b72/Tff7b72cffi builds, Python dev for runtime so native libs can be installed with
Tff7b72#Tff7b72 apk (the minimal chainguardTff7b72/Tff7b72python image has no shell or package manager).
Tff7b72#Tff7b72 Wolfi provides the opus package (libopus); Alpine's opusfile split is not present.
Tff7b72#Tff7b72 Glibc runtime uses LXST wheels as published; the musl filterlib bake is not used.
Tff7b72#Tff7b72 Voicemail greeting synthesis is optional without espeak-ng (see voicemail_manager).

Te6edf3ARG Te6edf3NODE_IMAGETff7b72=Te6edf3cgrTb4b4b4.Te6edf3devTff7b72/Te6edf3chainguardTff7b72/Te6edf3nodeTff7b72:Te6edf3latestTff7b72-Te6edf3dev
Te6edf3ARG Te6edf3PYTHON_BUILD_IMAGETff7b72=Te6edf3cgrTb4b4b4.Te6edf3devTff7b72/Te6edf3chainguardTff7b72/Te6edf3pythonTff7b72:Te6edf3latestTff7b72-Te6edf3dev
Te6edf3ARG Te6edf3PYTHON_RUNTIME_IMAGETff7b72=Te6edf3cgrTb4b4b4.Te6edf3devTff7b72/Te6edf3chainguardTff7b72/Te6edf3pythonTff7b72:Te6edf3latestTff7b72-Te6edf3dev

Te6edf3FROM Tff7b72-Tff7b72-Te6edf3platformTff7b72=Te6edf3linuxTff7b72/Te6edf3amd64 Te6edf3$Tb4b4b4{Te6edf3NODE_IMAGETb4b4b4} Te6edf3AS Te6edf3buildTff7b72-Te6edf3frontend
Te6edf3USER Te6edf3root
Te6edf3WORKDIR Tff7b72/Te6edf3src
Tff7b72#Tff7b72 go is required to compile visualiser-wasm (gitignored binary; not in image context)
Te6edf3RUN Te6edf3apk Te6edf3add Tff7b72-Tff7b72-Te6edf3noTff7b72-Te6edf3cache Te6edf3git Te6edf3python3 Te6edf3go
Te6edf3COPY Te6edf3packageTb4b4b4.Te6edf3json Te6edf3pnpmTff7b72-Te6edf3lockTb4b4b4.Te6edf3yaml Te6edf3pnpmTff7b72-Te6edf3workspaceTb4b4b4.Te6edf3yaml Te6edf3viteTb4b4b4.Te6edf3configTb4b4b4.Te6edf3js Tb4b4b4.Tff7b72/
Te6edf3COPY Te6edf3patches Tb4b4b4.Tff7b72/Te6edf3patches
Te6edf3COPY Te6edf3scriptsTff7b72/Te6edf3fetchTff7b72-Te6edf3micronTff7b72-Te6edf3wasmTb4b4b4.Te6edf3mjs Te6edf3scriptsTff7b72/Te6edf3fetchTff7b72-Te6edf3micronTff7b72-Te6edf3wasmTb4b4b4.Te6edf3mjs
Te6edf3COPY Te6edf3scriptsTff7b72/Te6edf3micronTff7b72-Te6edf3wasmTff7b72-Te6edf3resolveTff7b72-Te6edf3bundledTb4b4b4.Te6edf3mjs Te6edf3scriptsTff7b72/Te6edf3micronTff7b72-Te6edf3wasmTff7b72-Te6edf3resolveTff7b72-Te6edf3bundledTb4b4b4.Te6edf3mjs
Te6edf3COPY Te6edf3scriptsTff7b72/Te6edf3micronTff7b72-Te6edf3parserTff7b72-Te6edf3goTff7b72-Te6edf3versionTb4b4b4.Te6edf3mjs Te6edf3scriptsTff7b72/Te6edf3micronTff7b72-Te6edf3parserTff7b72-Te6edf3goTff7b72-Te6edf3versionTb4b4b4.Te6edf3mjs
Te6edf3COPY Te6edf3scriptsTff7b72/Te6edf3buildTff7b72-Te6edf3visualiserTff7b72-Te6edf3wasmTb4b4b4.Te6edf3mjs Te6edf3scriptsTff7b72/Te6edf3buildTff7b72-Te6edf3visualiserTff7b72-Te6edf3wasmTb4b4b4.Te6edf3mjs
Te6edf3COPY Te6edf3scriptsTff7b72/Te6edf3syncTff7b72-Te6edf3meshchatxTff7b72-Te6edf3docsTb4b4b4.Te6edf3js Te6edf3scriptsTff7b72/Te6edf3syncTff7b72-Te6edf3meshchatxTff7b72-Te6edf3docsTb4b4b4.Te6edf3js
Te6edf3COPY Te6edf3scriptsTff7b72/Te6edf3pip_rns_remotesTb4b4b4.Te6edf3py Te6edf3scriptsTff7b72/Te6edf3pip_rns_remotesTb4b4b4.Te6edf3py
Te6edf3COPY Te6edf3scriptsTff7b72/Te6edf3buildTff7b72/Te6edf3fetch_reticulum_manualTb4b4b4.Te6edf3py Te6edf3scriptsTff7b72/Te6edf3buildTff7b72/Te6edf3fetch_reticulum_manualTb4b4b4.Te6edf3py
Te6edf3COPY Te6edf3docs Tb4b4b4.Tff7b72/Te6edf3docs
Te6edf3COPY Te6edf3visualiserTff7b72-Te6edf3wasm Tb4b4b4.Tff7b72/Te6edf3visualiserTff7b72-Te6edf3wasm
Te6edf3COPY Te6edf3meshchatxTff7b72/Te6edf3srcTff7b72/Te6edf3frontend Tb4b4b4.Tff7b72/Te6edf3meshchatxTff7b72/Te6edf3srcTff7b72/Te6edf3frontend
Te6edf3ENV Te6edf3GOCACHETff7b72=Tff7b72/Te6edf3tmpTff7b72/Te6edf3goTff7b72-Te6edf3cache
Te6edf3ENV Te6edf3GOTMPDIRTff7b72=Tff7b72/Te6edf3tmpTff7b72/Te6edf3goTff7b72-Te6edf3tmp
Te6edf3RUN Te6edf3mkdir Tff7b72-Te6edf3p Tff7b72/Te6edf3tmpTff7b72/Te6edf3goTff7b72-Te6edf3cache Tff7b72/Te6edf3tmpTff7b72/Te6edf3goTff7b72-Te6edf3tmp Tff7b72&Tff7b72& \
Te6edf3npm Te6edf3install Tff7b72-Te6edf3g Te6edf3pnpmT79c0ff@11.1T79c0ff.2 Tff7b72&Tff7b72& \
Te6edf3pnpm Te6edf3config Te6edf3set Te6edf3verifyTff7b72-Te6edf3storeTff7b72-Te6edf3integrity Tffa657true Tff7b72&Tff7b72& \
Te6edf3pnpm Te6edf3install Tff7b72-Tff7b72-Te6edf3frozenTff7b72-Te6edf3lockfile Tff7b72&Tff7b72& \
Te6edf3MESHCHATX_REQUIRE_VISUALISER_WASMTff7b72=T79c0ff1 Te6edf3pnpm Te6edf3run Te6edf3buildTff7b72-Te6edf3frontend Tff7b72&Tff7b72& \
Te6edf3test Tff7b72-Te6edf3s Te6edf3meshchatxTff7b72/Te6edf3srcTff7b72/Te6edf3frontendTff7b72/Te6edf3publicTff7b72/Te6edf3vendorTff7b72/Te6edf3visualiserTff7b72-Te6edf3wasmTff7b72/Te6edf3visualiserTb4b4b4.Te6edf3wasm Tff7b72&Tff7b72& \
Te6edf3test Tff7b72-Te6edf3s Te6edf3meshchatxTff7b72/Te6edf3srcTff7b72/Te6edf3frontendTff7b72/Te6edf3publicTff7b72/Te6edf3vendorTff7b72/Te6edf3visualiserTff7b72-Te6edf3wasmTff7b72/Te6edf3wasm_execTb4b4b4.Te6edf3js Tff7b72&Tff7b72& \
Te6edf3test Tff7b72-Te6edf3s Te6edf3meshchatxTff7b72/Te6edf3srcTff7b72/Te6edf3frontendTff7b72/Te6edf3publicTff7b72/Te6edf3vendorTff7b72/Te6edf3micronTff7b72-Te6edf3parserTff7b72-Te6edf3goTff7b72/Te6edf3micronTff7b72-Te6edf3parserTff7b72-Te6edf3goTb4b4b4.Te6edf3wasm Tff7b72&Tff7b72& \
Te6edf3test Tff7b72-Te6edf3s Te6edf3meshchatxTff7b72/Te6edf3srcTff7b72/Te6edf3frontendTff7b72/Te6edf3publicTff7b72/Te6edf3vendorTff7b72/Te6edf3micronTff7b72-Te6edf3parserTff7b72-Te6edf3goTff7b72/Te6edf3wasm_execTb4b4b4.Te6edf3js Tff7b72&Tff7b72& \
Te6edf3pnpm Te6edf3run Te6edf3buildTff7b72-Te6edf3docs

Te6edf3FROM Te6edf3$Tb4b4b4{Te6edf3PYTHON_BUILD_IMAGETb4b4b4} Te6edf3AS Te6edf3builder
Te6edf3USER Te6edf3root
Te6edf3WORKDIR Tff7b72/Te6edf3build
Te6edf3RUN Te6edf3apk Te6edf3add Tff7b72-Tff7b72-Te6edf3noTff7b72-Te6edf3cache Te6edf3buildTff7b72-Te6edf3base Te6edf3git Te6edf3pkgconf Te6edf3opensslTff7b72-Te6edf3dev Te6edf3libffiTff7b72-Te6edf3dev Te6edf3linuxTff7b72-Te6edf3headers

Te6edf3RUN Te6edf3pip Te6edf3install Tff7b72-Tff7b72-Te6edf3noTff7b72-Te6edf3cacheTff7b72-Te6edf3dir Tff7b72-Tff7b72-Te6edf3upgrade Ta5d6ff"Ta5d6ffpip>=26.0Ta5d6ff" Te6edf3uv Te6edf3setuptools Te6edf3wheel Ta5d6ff"Ta5d6ffjaraco.context>=6.1.0Ta5d6ff"

Te6edf3RUN Te6edf3python Tff7b72-Te6edf3m Te6edf3venv Tff7b72/Te6edf3optTff7b72/Te6edf3venv
Te6edf3ENV Te6edf3PATHTff7b72=Ta5d6ff"Ta5d6ff/opt/venv/bin:$PATHTa5d6ff"
Te6edf3ENV Te6edf3UV_PROJECT_ENVIRONMENTTff7b72=Tff7b72/Te6edf3optTff7b72/Te6edf3venv

Te6edf3RUN Te6edf3pip Te6edf3install Tff7b72-Tff7b72-Te6edf3noTff7b72-Te6edf3cacheTff7b72-Te6edf3dir Tff7b72-Tff7b72-Te6edf3upgrade Ta5d6ff"Ta5d6ffpip>=26.0Ta5d6ff" Ta5d6ff"Ta5d6ffsetuptoolsTa5d6ff" Ta5d6ff"Ta5d6ffjaraco.context>=6.1.0Ta5d6ff"

Te6edf3COPY Te6edf3pyprojectTb4b4b4.Te6edf3toml Te6edf3uvTb4b4b4.Te6edf3lock Te6edf3READMETb4b4b4.Te6edf3md Te6edf3CHANGELOGTb4b4b4.Te6edf3md Tb4b4b4.Tff7b72/
Te6edf3COPY Te6edf3logo Tb4b4b4.Tff7b72/Te6edf3logo
Te6edf3COPY Te6edf3vendor Tb4b4b4.Tff7b72/Te6edf3vendor
Te6edf3COPY Te6edf3scriptsTff7b72/Te6edf3patch_lxst_pyogg_ogg_ctypesTb4b4b4.Te6edf3py Tb4b4b4.Tff7b72/Te6edf3scriptsTff7b72/Te6edf3patch_lxst_pyogg_ogg_ctypesTb4b4b4.Te6edf3py
Te6edf3COPY Te6edf3scriptsTff7b72/Te6edf3patch_lxst_codec2_optionalTb4b4b4.Te6edf3py Tb4b4b4.Tff7b72/Te6edf3scriptsTff7b72/Te6edf3patch_lxst_codec2_optionalTb4b4b4.Te6edf3py
Tff7b72#Tff7b72 Third-party deps layer: stable across app-only updates when uv.lock is unchanged.
Tff7b72#Tff7b72 --inexact keeps setuptoolsTff7b72/Tff7b72jaraco.context already in the venv (cffi needs them).
Te6edf3RUN Te6edf3uv Te6edf3sync Tff7b72-Tff7b72-Te6edf3noTff7b72-Te6edf3group Te6edf3dev Tff7b72-Tff7b72-Te6edf3noTff7b72-Te6edf3installTff7b72-Te6edf3project Tff7b72-Tff7b72-Te6edf3inexact Tff7b72&Tff7b72& \
Te6edf3rm Tff7b72-Te6edf3rf Tff7b72/Te6edf3rootTff7b72/Tb4b4b4.Te6edf3cacheTff7b72/Te6edf3pip Tff7b72/Te6edf3rootTff7b72/Tb4b4b4.Te6edf3cacheTff7b72/Te6edf3uv Tff7b72&Tff7b72& \
Te6edf3pip Te6edf3install Tff7b72-Tff7b72-Te6edf3noTff7b72-Te6edf3cacheTff7b72-Te6edf3dir Tff7b72-Tff7b72-Te6edf3upgrade Ta5d6ff"Ta5d6ffsetuptoolsTa5d6ff" Ta5d6ff"Ta5d6ffjaraco.context>=6.1.0Ta5d6ff" Tff7b72&Tff7b72& \
Te6edf3python Te6edf3scriptsTff7b72/Te6edf3patch_lxst_pyogg_ogg_ctypesTb4b4b4.Te6edf3py Tff7b72&Tff7b72& \
Te6edf3python Te6edf3scriptsTff7b72/Te6edf3patch_lxst_codec2_optionalTb4b4b4.Te6edf3py Tff7b72&Tff7b72& \
Te6edf3rm Tff7b72-Te6edf3rf Tff7b72/Te6edf3optTff7b72/Te6edf3venvTff7b72/Te6edf3libTff7b72/Te6edf3pythonTff7b72*Tff7b72/Te6edf3siteTff7b72-Te6edf3packagesTff7b72/Te6edf3LXSTTff7b72/Te6edf3PlatformsTff7b72/Te6edf3android Tff7b72&Tff7b72& \
Te6edf3find Tff7b72/Te6edf3optTff7b72/Te6edf3venv Tff7b72-Te6edf3type Te6edf3d \Tb4b4b4( Tff7b72-Te6edf3name Te6edf3tests Tff7b72-Te6edf3o Tff7b72-Te6edf3name Te6edf3test Tff7b72-Te6edf3o Tff7b72-Te6edf3name Te6edf3__pycache__ \Tb4b4b4) Tff7b72-Te6edf3prune Tff7b72-Te6edf3exec Te6edf3rm Tff7b72-Te6edf3rf Tb4b4b4{Tb4b4b4} Tff7b72+ Tff7b72&Tff7b72& \
Te6edf3python Tff7b72-Te6edf3m Te6edf3compileall Tff7b72-Te6edf3q Tff7b72/Te6edf3optTff7b72/Te6edf3venv Tff7b72&Tff7b72& \
Te6edf3cp Tff7b72-Te6edf3a Tff7b72/Te6edf3optTff7b72/Te6edf3venv Tff7b72/Te6edf3optTff7b72/Te6edf3venvTff7b72-Te6edf3deps

Te6edf3COPY Te6edf3meshchatx Tb4b4b4.Tff7b72/Te6edf3meshchatx
Te6edf3COPY Tff7b72-Tff7b72-Te6edf3fromTff7b72=Te6edf3buildTff7b72-Te6edf3frontend Tff7b72/Te6edf3srcTff7b72/Te6edf3meshchatxTff7b72/Te6edf3public Tb4b4b4.Tff7b72/Te6edf3meshchatxTff7b72/Te6edf3public

Tff7b72#Tff7b72 App overlay: meshchatx + vendored packages + console scripts (changes often).
Te6edf3RUN Te6edf3pip Te6edf3install Tff7b72-Tff7b72-Te6edf3noTff7b72-Te6edf3cacheTff7b72-Te6edf3dir Tb4b4b4. Tff7b72&Tff7b72& \
Te6edf3PYVERTff7b72=Ta5d6ff"Ta5d6ff$(python -c 'import sys; print(fTa5d6ff"Tb4b4b4{Te6edf3sysTb4b4b4.Te6edf3version_infoTb4b4b4.Te6edf3majorTb4b4b4}Tb4b4b4.Tb4b4b4{Te6edf3sysTb4b4b4.Te6edf3version_infoTb4b4b4.Te6edf3minorTb4b4b4}Ta5d6ff"Ta5d6ff)')Ta5d6ff" Tff7b72&Tff7b72& \
Te6edf3SPTff7b72=Ta5d6ff"Ta5d6ff/opt/venv/lib/python${PYVER}/site-packagesTa5d6ff" Tff7b72&Tff7b72& \
Te6edf3OUTTff7b72=Ta5d6ff"Ta5d6ff/opt/app-overlayTa5d6ff" Tff7b72&Tff7b72& \
Te6edf3mkdir Tff7b72-Te6edf3p Ta5d6ff"Ta5d6ff${OUT}/lib/python${PYVER}/site-packagesTa5d6ff" Ta5d6ff"Ta5d6ff${OUT}/binTa5d6ff" Tff7b72&Tff7b72& \
Tff7b72for Te6edf3pkg Tff7b72in Te6edf3meshchatx Te6edf3lxmfy Te6edf3rns_filesyncTb4b4b4; Tff7b72do \
Te6edf3cp Tff7b72-Te6edf3a Ta5d6ff"Ta5d6ff${SP}/${pkg}Ta5d6ff" Ta5d6ff"Ta5d6ff${OUT}/lib/python${PYVER}/site-packages/Ta5d6ff"Tb4b4b4; \
Te6edf3done Tff7b72&Tff7b72& \
Te6edf3cp Tff7b72-Te6edf3a Ta5d6ff"Ta5d6ff${SP}Ta5d6ff"Tff7b72/Te6edf3reticulum_meshchatxTff7b72*Tb4b4b4.Te6edf3distTff7b72-Te6edf3info Ta5d6ff"Ta5d6ff${OUT}/lib/python${PYVER}/site-packages/Ta5d6ff" Tff7b72&Tff7b72& \
Tff7b72for Te6edf3cmd Tff7b72in Te6edf3meshchat Te6edf3meshchatx Te6edf3meshchatxTff7b72-Te6edf3repositoryTff7b72-Te6edf3http Te6edf3lxmfy Te6edf3rnsTff7b72-Te6edf3filesyncTb4b4b4; Tff7b72do \
Te6edf3cp Tff7b72-Te6edf3a Ta5d6ff"Ta5d6ff/opt/venv/bin/${cmd}Ta5d6ff" Ta5d6ff"Ta5d6ff${OUT}/bin/Ta5d6ff"Tb4b4b4; \
Te6edf3done Tff7b72&Tff7b72& \
Te6edf3find Ta5d6ff"Ta5d6ff${OUT}Ta5d6ff" Tff7b72-Te6edf3type Te6edf3d Tff7b72-Te6edf3name Te6edf3__pycache__ Tff7b72-Te6edf3prune Tff7b72-Te6edf3exec Te6edf3rm Tff7b72-Te6edf3rf Tb4b4b4{Tb4b4b4} Tff7b72+ Tff7b72&Tff7b72& \
Te6edf3python Tff7b72-Te6edf3m Te6edf3compileall Tff7b72-Te6edf3q Ta5d6ff"Ta5d6ff${OUT}/lib/python${PYVER}/site-packagesTa5d6ff"

Te6edf3FROM Te6edf3$Tb4b4b4{Te6edf3PYTHON_RUNTIME_IMAGETb4b4b4}

Te6edf3USER Te6edf3root
Te6edf3RUN Te6edf3apk Te6edf3add Tff7b72-Tff7b72-Te6edf3noTff7b72-Te6edf3cache Te6edf3opus Te6edf3libffi Te6edf3shadow Tff7b72&Tff7b72& \
Te6edf3pip Te6edf3install Tff7b72-Tff7b72-Te6edf3noTff7b72-Te6edf3cacheTff7b72-Te6edf3dir Tff7b72-Tff7b72-Te6edf3upgrade Ta5d6ff"Ta5d6ffpip>=26.0Ta5d6ff" Ta5d6ff"Ta5d6ffsetuptoolsTa5d6ff" Ta5d6ff"Ta5d6ffjaraco.context>=6.1.0Ta5d6ff" Tff7b72&Tff7b72& \
Te6edf3rm Tff7b72-Te6edf3rf Tff7b72/Te6edf3rootTff7b72/Tb4b4b4.Te6edf3cacheTff7b72/Te6edf3pip Tff7b72&Tff7b72& \
Te6edf3groupadd Tff7b72-Te6edf3g T79c0ff1000 Te6edf3meshchat Tff7b72&Tff7b72& \
Te6edf3useradd Tff7b72-Tff7b72-Te6edf3uid T79c0ff1000 Tff7b72-Tff7b72-Te6edf3gid T79c0ff1000 Tff7b72-Tff7b72-Te6edf3createTff7b72-Te6edf3home Tff7b72-Tff7b72-Te6edf3homeTff7b72-Te6edf3dir Tff7b72/Te6edf3homeTff7b72/Te6edf3meshchat \
Tff7b72-Tff7b72-Te6edf3shell Tff7b72/Te6edf3sbinTff7b72/Te6edf3nologin Te6edf3meshchat Tff7b72&Tff7b72& \
Te6edf3mkdir Tff7b72-Te6edf3p Tff7b72/Te6edf3config Tff7b72&Tff7b72& Te6edf3chown Te6edf3meshchatTff7b72:Te6edf3meshchat Tff7b72/Te6edf3config

Te6edf3COPY Tff7b72-Tff7b72-Te6edf3fromTff7b72=Te6edf3builder Tff7b72-Tff7b72-Te6edf3chownTff7b72=Te6edf3meshchatTff7b72:Te6edf3meshchat Tff7b72/Te6edf3optTff7b72/Te6edf3venvTff7b72-Te6edf3deps Tff7b72/Te6edf3optTff7b72/Te6edf3venv
Te6edf3COPY Tff7b72-Tff7b72-Te6edf3fromTff7b72=Te6edf3builder Tff7b72-Tff7b72-Te6edf3chownTff7b72=Te6edf3meshchatTff7b72:Te6edf3meshchat Tff7b72/Te6edf3optTff7b72/Te6edf3appTff7b72-Te6edf3overlayTff7b72/ Tff7b72/Te6edf3optTff7b72/Te6edf3venvTff7b72/
Te6edf3COPY Te6edf3scriptsTff7b72/Te6edf3docker_entrypoint_chainguardTb4b4b4.Te6edf3py Tff7b72/Te6edf3dockerTff7b72-Te6edf3entrypointTb4b4b4.Te6edf3py

Tff7b72#Tff7b72 Declare after COPY so per-build OCI values do not invalidate runtime or venv layers.
Te6edf3ARG Te6edf3OCI_REVISIONTff7b72=Ta5d6ff"Ta5d6ff"
Te6edf3ARG Te6edf3OCI_VERSIONTff7b72=Ta5d6ff"Ta5d6ff"
Te6edf3ARG Te6edf3OCI_CREATEDTff7b72=Ta5d6ff"Ta5d6ff"

Te6edf3LABEL Te6edf3orgTb4b4b4.Te6edf3opencontainersTb4b4b4.Te6edf3imageTb4b4b4.Te6edf3sourceTff7b72=Ta5d6ff"Ta5d6ffhttps://github.com/Quad4-Software/MeshChatXTa5d6ff"
Te6edf3LABEL Te6edf3orgTb4b4b4.Te6edf3opencontainersTb4b4b4.Te6edf3imageTb4b4b4.Te6edf3descriptionTff7b72=Ta5d6ff"Ta5d6ffMeshChatX is a all in one Reticulum client.Ta5d6ff"
Te6edf3LABEL Te6edf3orgTb4b4b4.Te6edf3opencontainersTb4b4b4.Te6edf3imageTb4b4b4.Te6edf3licensesTff7b72=Ta5d6ff"Ta5d6ffMIT AND 0BSDTa5d6ff"
Te6edf3LABEL Te6edf3orgTb4b4b4.Te6edf3opencontainersTb4b4b4.Te6edf3imageTb4b4b4.Te6edf3authorsTff7b72=Ta5d6ff"Ta5d6ffQuad4Ta5d6ff"
Te6edf3LABEL Te6edf3orgTb4b4b4.Te6edf3opencontainersTb4b4b4.Te6edf3imageTb4b4b4.Te6edf3revisionTff7b72=Ta5d6ff"Ta5d6ff${OCI_REVISION}Ta5d6ff"
Te6edf3LABEL Te6edf3orgTb4b4b4.Te6edf3opencontainersTb4b4b4.Te6edf3imageTb4b4b4.Te6edf3versionTff7b72=Ta5d6ff"Ta5d6ff${OCI_VERSION}Ta5d6ff"
Te6edf3LABEL Te6edf3orgTb4b4b4.Te6edf3opencontainersTb4b4b4.Te6edf3imageTb4b4b4.Te6edf3createdTff7b72=Ta5d6ff"Ta5d6ff${OCI_CREATED}Ta5d6ff"

Te6edf3ENV Te6edf3PATHTff7b72=Ta5d6ff"Ta5d6ff/opt/venv/bin:$PATHTa5d6ff"
Te6edf3ENV Te6edf3PYTHONUNBUFFEREDTff7b72=T79c0ff1
Te6edf3ENV Te6edf3PYTHONDONTWRITEBYTECODETff7b72=T79c0ff1
Te6edf3ENV Te6edf3MESHCHAT_FORCE_WEB_AUDIOTff7b72=T79c0ff1

Te6edf3USER Te6edf3meshchat

Te6edf3HEALTHCHECK Tff7b72-Tff7b72-Te6edf3intervalTff7b72=T79c0ff30Te6edf3s Tff7b72-Tff7b72-Te6edf3timeoutTff7b72=T79c0ff5Te6edf3s Tff7b72-Tff7b72-Te6edf3startTff7b72-Te6edf3periodTff7b72=T79c0ff90Te6edf3s Tff7b72-Tff7b72-Te6edf3retriesTff7b72=T79c0ff3 \
Te6edf3CMD Tb4b4b4[Ta5d6ff"Ta5d6ffpythonTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff-cTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffimport ssl, urllib.request; urllib.request.urlopen('https://127.0.0.1:8000/api/v1/status', context=ssl._create_unverified_context())Ta5d6ff"Tb4b4b4]

Te6edf3ENTRYPOINT Tb4b4b4[Ta5d6ff"Ta5d6ff/usr/bin/pythonTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff/docker-entrypoint.pyTa5d6ff"Tb4b4b4]
Te6edf3CMD Tb4b4b4[Ta5d6ff"Ta5d6ff/opt/venv/bin/meshchatxTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff--host=0.0.0.0Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff--reticulum-config-dir=/config/.reticulumTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff--storage-dir=/config/.reticulum-meshchatxTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff--headlessTa5d6ff"Tb4b4b4]


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────